﻿// 304 [CF 126B] Password.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#define  _CRT_SECURE_NO_WARNINGS

#include <iostream>
#include <cstring>

using namespace std;
/*
http://oj.daimayuan.top/course/22/problem/911

给你一个字符串 s
，由小写字母组成，你需要求出其中最长的一个子串 p
，满足 p
 既是 s
 的前缀，又是 s
 的后缀，且在 s
 中以非前缀后缀的形式出现过。如果找不到输出 Just a legend。

输入一行一个字符串 s
，输出一行一个字符串 p
。

输入格式
一行一个字符串 s
。

输出格式
输出一行一个字符串表示答案。

样例输入1
fixprefixsuffix
样例输出1
fix
样例输入2
abcdabc
样例输出2
Just a legend
数据规模
对于所有数据，保证 1≤|s|≤106
，字符串均由小写字母构成。
*/
int n, z[1000011];
char s[1000011];

void exkmp() {
	n = strlen(s + 1);
	int L = 1, R = 0;
	z[1] = 0;
	for (int i = 2; i <= n; i++) {
		if (i > R)
			z[i] = 0;
		else {
			int k = i - L + 1;
			z[i] = min(z[k],R-i+1);
		}
		while (i + z[i] <= n && s[z[i] + 1] == s[i + z[i]])
			++z[i];
		if (i + z[i] - 1 > R)
			L = i, R = i + z[i] - 1;
	}
	int ans = 0, x = 0;
	for (int i = 1; i <= n; i++) {
		if (i + z[i] - 1 == n)
			if (x >= z[i])
				ans = max(ans, z[i]);
		x = max(x, z[i]);
	}

	if (!ans)
		printf("Just a legend\n");
	else
		for (int i = 1; i <= ans; i++) {
			printf("%c",s[i]);
		}

}


int main()
{
	scanf("%s",s+1);
	exkmp();
	return 0;
}
 